package managers;
import gui.logowanie.LoginGui;
import gui.uzytkownicy.ZarzadzanieUzytkownikamiGUI;
import gui.rejestracja.PanelRejestracjiProbki;
import gui.rejestracja.RejestracjaGui;
import gui.rejestracja.ZakladkaZlecenia;
import gui.specyfikacja.PanelDodaniaTypuProbki;
import gui.specyfikacja.PanelEdycjiTypuProbki;
import gui.specyfikacja.PanelZarzadzaniaBadaniem;
import gui.specyfikacja.PanelZarzadzaniaTypamiBadan;
import gui.specyfikacja.PanelZarzadzaniaTypamiProbek;
import gui.administrator.AdministratorGUI;
import gui.badanie.BadanieGUI;
import gui.badanie.PanelWprowadzaniaWynikow;
import gui.badanie.PanelWyboruBadania;
import gui.weryfikacja.PanelWeryfikacjiWynikow;
import gui.weryfikacja.PanelWyboruBadanDoWeryfikacji;
import gui.weryfikacja.WeryfikacjaGUI;
import entities.Pracownik;

import java.awt.Dimension;
import java.awt.Window;


public class GuiManager 
{
	private LoginGui panelLogowania = null;
	private RejestracjaGui panelRejestracji = null;	
	private PanelRejestracjiProbki panelRejestracjiProbki = null;	
	private ZarzadzanieUzytkownikamiGUI panelZarzadzaniaUrzytkownikami = null;
    private BadanieGUI badanieGUI = null;
    private PanelWyboruBadania panelWyboruBadania = null;
    private PanelWprowadzaniaWynikow panelWprowadzaniaWynikow = null;
    private WeryfikacjaGUI weryfikacjaGUI = null;
    private PanelWyboruBadanDoWeryfikacji panelWyboruBadanDoWeryfikacji= null;
    private PanelWeryfikacjiWynikow panelWeryfikacjiWynikow = null;
    private AdministratorGUI administratorGUI = null;
    private PanelZarzadzaniaTypamiProbek panelZarzadzaniaTypamiProbek = null;
    private PanelZarzadzaniaTypamiBadan panelZarzadzaniaTypamiBadan = null;
    private PanelDodaniaTypuProbki panelDodaniaTypuProbki = null;
	private PanelEdycjiTypuProbki panelEdycjiTypuProbki = null;
	private PanelZarzadzaniaBadaniem panelZarzadzaniaBadaniem = null;

	
	public void start() /* Uruchomienie programu. */
	{		
		//pokazPanelRejestracjiProbki(null,null);
		//pokazPanelZarzadzaniaTypamiBadan(this,null);
		//TODO: Funkcja wywolywana takze po nacisnieciu "wyloguj". Trzeba zmienic nazwe!
		panelLogowania = new LoginGui(this);
		panelLogowania.setLocationRelativeTo(null);
		panelLogowania.setVisible(true);	
		
			
	}
	public void udaloSieZalogowac(Pracownik prac)
	{
		String stanowisko = prac.getStanowisko();		
		if(stanowisko.compareTo("Rejestracja")==0)
		{			
			panelRejestracji = new RejestracjaGui(this,prac);
			panelRejestracji.setLocationRelativeTo(null);
			panelRejestracji.setMinimumSize(new Dimension(panelRejestracji.getWidth(),panelRejestracji.getHeight()));
			panelRejestracji.setVisible(true);			
		}
		else if(stanowisko.compareTo("Administrator")==0)
		{
			pokazPanelAdministratora(this);
			//pokazPanelZarzadzaniaUzytkownikami();
		}
        else if(stanowisko.compareTo("Laboratorium")==0)
		{
			pokazPanelBadaniaProbki(this);
		}
        else if(stanowisko.compareTo("Weryfikacja")==0)
        {
        	pokazPanelWeryfikacji(this);
        }
		panelLogowania.dispose();		
	}
	public void zrezygnowanoZLogowania()
	{
		panelLogowania.dispose();
	}
	public void pokazPanelAdministratora(GuiManager guiManager) {
		this.administratorGUI = new AdministratorGUI(guiManager);
		this.administratorGUI.setLocationRelativeTo(null);
		this.administratorGUI.setMinimumSize(new Dimension(administratorGUI.getWidth(),administratorGUI.getHeight()));
		this.administratorGUI.setMaximumSize(new Dimension(administratorGUI.getWidth(),administratorGUI.getHeight()));		
		this.administratorGUI.setVisible(true);	
		this.administratorGUI.setResizable(false);
	}
	public void pokazPanelRejestracjiProbki(Window parentWindow, ZakladkaZlecenia observeTab)
	{
		this.panelRejestracjiProbki = new PanelRejestracjiProbki(parentWindow,observeTab);
		this.panelRejestracjiProbki.setLocationRelativeTo(null);
		this.panelRejestracjiProbki.setMinimumSize(new Dimension(panelRejestracjiProbki.getWidth(),panelRejestracjiProbki.getHeight()));
		this.panelRejestracjiProbki.setMaximumSize(new Dimension(panelRejestracjiProbki.getWidth(),panelRejestracjiProbki.getHeight()));		
		this.panelRejestracjiProbki.setVisible(true);	
		this.panelRejestracjiProbki.setResizable(false);
	}
	public void pokazPanelZarzadzaniaUzytkownikami()
	{
		this.panelZarzadzaniaUrzytkownikami = new ZarzadzanieUzytkownikamiGUI();
		this.panelZarzadzaniaUrzytkownikami.setLocationRelativeTo(null);
		this.panelZarzadzaniaUrzytkownikami.setMinimumSize(new Dimension(panelZarzadzaniaUrzytkownikami.getWidth(),panelZarzadzaniaUrzytkownikami.getHeight()));
		this.panelZarzadzaniaUrzytkownikami.setMaximumSize(new Dimension(panelZarzadzaniaUrzytkownikami.getWidth(),panelZarzadzaniaUrzytkownikami.getHeight()));		
		this.panelZarzadzaniaUrzytkownikami.setVisible(true);	
		this.panelZarzadzaniaUrzytkownikami.setResizable(false);
	}

    public void pokazPanelBadaniaProbki(GuiManager guiManager) {
       	this.badanieGUI = new BadanieGUI(guiManager);
		this.badanieGUI.setLocationRelativeTo(null);
		this.badanieGUI.setMinimumSize(new Dimension(badanieGUI.getWidth(),badanieGUI.getHeight()));
		this.badanieGUI.setMaximumSize(new Dimension(badanieGUI.getWidth(),badanieGUI.getHeight()));
		this.badanieGUI.setVisible(true);
		this.badanieGUI.setResizable(false);
    }
    public void pokazPanelWeryfikacji(GuiManager guiManager) {
       	this.weryfikacjaGUI = new WeryfikacjaGUI(guiManager);
		this.weryfikacjaGUI.setLocationRelativeTo(null);
		this.weryfikacjaGUI.setMinimumSize(new Dimension(weryfikacjaGUI.getWidth(),weryfikacjaGUI.getHeight()));
		this.weryfikacjaGUI.setMaximumSize(new Dimension(weryfikacjaGUI.getWidth(),weryfikacjaGUI.getHeight()));
		this.weryfikacjaGUI.setVisible(true);
		this.weryfikacjaGUI.setResizable(false);
    }
    public void pokazPanelDostepnychBadanDoBadania(GuiManager guiManager)
    {
    	this.panelWyboruBadania = new PanelWyboruBadania(guiManager);
    	this.panelWyboruBadania.setLocationRelativeTo(null);
    	this.panelWyboruBadania.setMinimumSize(new Dimension(panelWyboruBadania.getWidth(),panelWyboruBadania.getHeight()));
    	this.panelWyboruBadania.setMaximumSize(new Dimension(panelWyboruBadania.getWidth(),panelWyboruBadania.getHeight()));
    	this.panelWyboruBadania.setVisible(true);
    	this.panelWyboruBadania.setResizable(false);
    }
    public void pokazPanelDostepnychBadanDoWeryfikacji(GuiManager guiManager)
    {
    	this.panelWyboruBadanDoWeryfikacji = new PanelWyboruBadanDoWeryfikacji(guiManager);
    	this.panelWyboruBadanDoWeryfikacji.setLocationRelativeTo(null);
    	this.panelWyboruBadanDoWeryfikacji.setMinimumSize(new Dimension(panelWyboruBadanDoWeryfikacji.getWidth(),panelWyboruBadanDoWeryfikacji.getHeight()));
    	this.panelWyboruBadanDoWeryfikacji.setMaximumSize(new Dimension(panelWyboruBadanDoWeryfikacji.getWidth(),panelWyboruBadanDoWeryfikacji.getHeight()));
    	this.panelWyboruBadanDoWeryfikacji.setVisible(true);
    	this.panelWyboruBadanDoWeryfikacji.setResizable(false);
    }

    public void pokazPanelWprowadzaniaWynikow(GuiManager guiManager, BadanieManager badanieManager) {
		this.panelWprowadzaniaWynikow = new PanelWprowadzaniaWynikow(guiManager, badanieManager);
		this.panelWprowadzaniaWynikow.setLocationRelativeTo(null);
    	this.panelWprowadzaniaWynikow.setMinimumSize(new Dimension(panelWprowadzaniaWynikow.getWidth(),panelWprowadzaniaWynikow.getHeight()));
    	this.panelWprowadzaniaWynikow.setMaximumSize(new Dimension(panelWprowadzaniaWynikow.getWidth(),panelWprowadzaniaWynikow.getHeight()));
    	this.panelWprowadzaniaWynikow.setVisible(true);
    	this.panelWprowadzaniaWynikow.setResizable(false);
	}
    public void pokazPanelWeryfikacjiWynikow(GuiManager guiManager, WeryfikacjaManager weryfikacjaManager) {
		this.panelWeryfikacjiWynikow = new PanelWeryfikacjiWynikow(guiManager, weryfikacjaManager);
		this.panelWeryfikacjiWynikow.setLocationRelativeTo(null);
    	this.panelWeryfikacjiWynikow.setMinimumSize(new Dimension(panelWeryfikacjiWynikow.getWidth(),panelWeryfikacjiWynikow.getHeight()));
    	this.panelWeryfikacjiWynikow.setMaximumSize(new Dimension(panelWeryfikacjiWynikow.getWidth(),panelWeryfikacjiWynikow.getHeight()));
    	this.panelWeryfikacjiWynikow.setVisible(true);
    	this.panelWeryfikacjiWynikow.setResizable(false);
	}
	public void pokazPanelZarzadzaniaSpecyfikacjami(GuiManager guiManager) {
		this.panelZarzadzaniaTypamiProbek = new PanelZarzadzaniaTypamiProbek(guiManager);
		this.panelZarzadzaniaTypamiProbek.setLocationRelativeTo(null);
    	this.panelZarzadzaniaTypamiProbek.setMinimumSize(new Dimension(panelZarzadzaniaTypamiProbek.getWidth(),panelZarzadzaniaTypamiProbek.getHeight()));
    	this.panelZarzadzaniaTypamiProbek.setMaximumSize(new Dimension(panelZarzadzaniaTypamiProbek.getWidth(),panelZarzadzaniaTypamiProbek.getHeight()));
    	this.panelZarzadzaniaTypamiProbek.setVisible(true);
    	this.panelZarzadzaniaTypamiProbek.setResizable(false);
	}
	public void pokazPanelZarzadzaniaTypamiBadan(GuiManager guiManager, SpecyfikacjaManager specyfikacjaManager)
	{
		this.panelZarzadzaniaTypamiBadan = new PanelZarzadzaniaTypamiBadan(guiManager,specyfikacjaManager);
		this.panelZarzadzaniaTypamiBadan.setLocationRelativeTo(null);
    	this.panelZarzadzaniaTypamiBadan.setMinimumSize(new Dimension(panelZarzadzaniaTypamiBadan.getWidth(),panelZarzadzaniaTypamiBadan.getHeight()));
    	this.panelZarzadzaniaTypamiBadan.setMaximumSize(new Dimension(panelZarzadzaniaTypamiBadan.getWidth(),panelZarzadzaniaTypamiBadan.getHeight()));
    	this.panelZarzadzaniaTypamiBadan.setVisible(true);
    	this.panelZarzadzaniaTypamiBadan.setResizable(false);

	}
	public void pokazPanelDodaniaTypuProbki(GuiManager guiManager,SpecyfikacjaManager specyfikacjaManager)
	{
		this.panelDodaniaTypuProbki = new PanelDodaniaTypuProbki(guiManager,specyfikacjaManager);
		this.panelDodaniaTypuProbki.setLocationRelativeTo(null);
    	this.panelDodaniaTypuProbki.setMinimumSize(new Dimension(panelDodaniaTypuProbki.getWidth(),panelDodaniaTypuProbki.getHeight()));
    	this.panelDodaniaTypuProbki.setMaximumSize(new Dimension(panelDodaniaTypuProbki.getWidth(),panelDodaniaTypuProbki.getHeight()));
    	this.panelDodaniaTypuProbki.setVisible(true);
    	this.panelDodaniaTypuProbki.setResizable(false);

	}
	public void pokazPanelEdycjiTypuProbki(GuiManager guiManager,SpecyfikacjaManager specyfikacjaManager)
	{
		this.panelEdycjiTypuProbki = new PanelEdycjiTypuProbki(guiManager,specyfikacjaManager);
		this.panelEdycjiTypuProbki.setLocationRelativeTo(null);
    	this.panelEdycjiTypuProbki.setMinimumSize(new Dimension(panelEdycjiTypuProbki.getWidth(),panelEdycjiTypuProbki.getHeight()));
    	this.panelEdycjiTypuProbki.setMaximumSize(new Dimension(panelEdycjiTypuProbki.getWidth(),panelEdycjiTypuProbki.getHeight()));
    	this.panelEdycjiTypuProbki.setVisible(true);
    	this.panelEdycjiTypuProbki.setResizable(false);

	}
	public void pokazPanelZarzadzaniaBadaniem(GuiManager guiManager, SpecyfikacjaManager specyfikacjaManager, boolean trybDodawania) {
		this.panelZarzadzaniaBadaniem = new PanelZarzadzaniaBadaniem(guiManager,specyfikacjaManager,trybDodawania);
		this.panelZarzadzaniaBadaniem.setLocationRelativeTo(null);
    	this.panelZarzadzaniaBadaniem.setMinimumSize(new Dimension(panelZarzadzaniaBadaniem.getWidth(),panelZarzadzaniaBadaniem.getHeight()));
    	this.panelZarzadzaniaBadaniem.setMaximumSize(new Dimension(panelZarzadzaniaBadaniem.getWidth(),panelZarzadzaniaBadaniem.getHeight()));
    	this.panelZarzadzaniaBadaniem.setVisible(true);
    	this.panelZarzadzaniaBadaniem.setResizable(false);


		
	}

	
}
